home *** CD-ROM | disk | FTP | other *** search
/ Libris Britannia 4 / science library(b).zip / science library(b) / ELECTRON / 0989.ZIP / ESPRESSO.ARC / ESPRESSO.DOC < prev    next >
Text File  |  1987-03-14  |  26KB  |  661 lines

  1.  
  2.  
  3.  
  4.      EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((1111))))     XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV    ((((11112222////22228888////88884444))))       EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((1111))))
  5.  
  6.  
  7.  
  8.      NNNNAAAAMMMMEEEE
  9.       espresso - Boolean Minimization
  10.  
  11.      SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  12.       eeeesssspppprrrreeeessssssssoooo [_t_y_p_e] [_f_i_l_e] [_o_p_t_i_o_n_s]
  13.  
  14.      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  15.       _E_s_p_r_e_s_s_o takes as input a two-level representation of    a
  16.       two-valued (or a multiple-valued) Boolean function, and
  17.       produces a minimal equivalent    representation.     The
  18.       algorithms used are new and represent    an advance in both
  19.       speed    and optimality of solution in heuristic    Boolean
  20.       minimization.
  21.  
  22.       _E_s_p_r_e_s_s_o reads the _f_i_l_e provided (or standard    input if no
  23.       files    are specified),    performs the minimization, and writes
  24.       the minimized    result to standard output.  _E_s_p_r_e_s_s_o
  25.       automatically    verifies that the minimized function is
  26.       equivalent to    the original function.
  27.  
  28.       The default input and    output file formats are    compatible
  29.       with the Berkeley standard format for    the physical
  30.       description of a PLA.     The input format is described in
  31.       detail in espresso(5).  Note that the    input file is a
  32.       _l_o_g_i_c_a_l representation of a set of Boolean equations,    and
  33.       hence    the input format differs slightly from that described
  34.       in pla(5) (which provides for    the _p_h_y_s_i_c_a_l representation of
  35.       a PLA).  The input and output    formats    have been expanded to
  36.       allow    for multiple-valued logic functions, and to allow for
  37.       the specification of the don't care set which    will be    used
  38.       in the minimization.
  39.  
  40.       _T_y_p_e specifies the logical format for    the function.  The
  41.       allowed types    are -f,    -r, -fr, -fd, -dr, and -fdr which have
  42.       the same meanings assigned in    espresso(5).
  43.  
  44.       The command line options described below can be specified
  45.       anywhere on the command line and must    be separated by
  46.       spaces:
  47.  
  48.       ----dddd      Verbose detail describing the    progress of the
  49.           minimization is written to standard output.  Useful
  50.           only for those familiar with the algorithms used.
  51.  
  52.       ----ddddoooo [[[[ssss]]]] This option executes subprogram [s].    Some of    the
  53.           more useful ones are:
  54.           cccchhhheeeecccckkkk    - checks that the function is a    partition of
  55.           the entire space (i.e., that the ON-set, OFF-set and
  56.           DC-set are pairwise disjoint,    and that their union
  57.           is the Universe)
  58.           eeeecccchhhhoooo - implies "-out fdr" and    echoes the function to
  59.           standard output.  This can be    used to    compute    the
  60.  
  61.  
  62.  
  63.      Page 1                         (printed 3/14/87)
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((1111))))     XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV    ((((11112222////22228888////88884444))))       EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((1111))))
  71.  
  72.  
  73.  
  74.           complement of    a function.
  75.           ooooppppoooo -    choose a good assignment of output function
  76.           phases, and minimize the function
  77.           qqqqmmmm - generate    all prime implicants of    a function,
  78.           compute the "reduced prime implicant table" and
  79.           perform a simple greedy covering of this table.
  80.           Will also provide a bound on the size    of the minimum
  81.           solution if option -d    is used.
  82.           ssssttttaaaattttssss    - provide simple statistics on the size    of the
  83.           function
  84.           The remaining    subprograms (contain, compact, essen,
  85.           expand, intersect, irred, lexsort, mincov,
  86.           miniexpord, miniredord, pop, primes, reduce, sharp,
  87.           taut,    union, unravel,    verify + surely    others by now)
  88.           are intended for those heavily into manipulating
  89.           Boolean functions.
  90.  
  91.       ----ffffaaaasssstttt      Stop after the first EXPAND and IRREDUNDANT
  92.           operations (i.e., do not iterate over    the solution).
  93.  
  94.       ----kkkkiiiissssssss      Sets up a _k_i_s_s-style minimization problem.
  95.  
  96.       ----nnnneeeessssssss      Essential primes will    not be detected    and removed
  97.           from the minimization.
  98.  
  99.       ----nnnniiiirrrrrrrr      The final result will    not necessarily    be forced
  100.           irredundant.
  101.  
  102.       ----hhhheeeellllpppp      Provides a quick summary of the available command
  103.           line options.
  104.  
  105.       ----oooouuuutttt [[[[ssss]]]]
  106.           Selects the output format.  By default, only the
  107.           ON-set (i.e.,    type f)    is output after    the
  108.           minimization.     [s] can be one    of f, d, r, fd,    dr,
  109.           fr, or fdr to    select any combination of the ON-set
  110.           (f), the OFF-set (r) or the DC-set (d).
  111.  
  112.       ----ppppoooossss      Swaps    the ON-set and OFF-set of the function after
  113.           reading the function.     (This can be used to minimize
  114.           the OFF-set of a function.)
  115.  
  116.       ----ssss      Will provide a short summary of the execution    of the
  117.           program including the    initial    cost of    the function,
  118.           the final cost, and the computer resources used.
  119.  
  120.       ----tttt      Will produce a trace showing the execution of    the
  121.           program.  After each main step of the    algorithm, a
  122.           single line is printed which reports the processor
  123.           time used, and the current cost of the function.
  124.  
  125.       ----xxxx      Suppress printing of the solution.
  126.  
  127.  
  128.  
  129.      Page 2                         (printed 3/14/87)
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((1111))))     XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV    ((((11112222////22228888////88884444))))       EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((1111))))
  137.  
  138.  
  139.  
  140.      DDDDIIIIAAAAGGGGNNNNOOOOSSSSTTTTIIIICCCCSSSS
  141.       _e_s_p_r_e_s_s_o will    issue a    warning    message    if a product term
  142.       spans    more than one line.  Usually this is an    indication
  143.       that the number of inputs or outputs of the function is
  144.       specified incorrectly.
  145.  
  146.      SSSSEEEEEEEE AAAALLLLSSSSOOOO
  147.       pla(5), espresso(5)
  148.       _L_o_g_i_c    _M_i_n_i_m_i_z_a_t_i_o_n _A_l_g_o_r_i_t_h_m_s    _f_o_r _V_L_S_I _S_y_n_t_h_e_s_i_s, R.
  149.       Brayton, G. Hachtel, C. McMullen, and    A. Sangiovanni-
  150.       Vincentelli, Kluwer Academic Publishers, 1984.
  151.  
  152.      AAAAUUUUTTTTHHHHOOOORRRR
  153.       Richard Rudell
  154.  
  155.      BBBBUUUUGGGGSSSS
  156.       Always passes    comments from the input    file, and passes
  157.       unrecognized options straight    from the input file to
  158.       standard output (sometimes this isn't    what you want).
  159.  
  160.       There    are a lot of options, but the most typical use is the
  161.       following:
  162.           eqntott -r file.eqn |    espresso >file.pla
  163.       The -R option    of eqntott should not be used (it is much too
  164.       expensive).
  165.  
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.  
  178.  
  179.  
  180.  
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187.  
  188.  
  189.  
  190.  
  191.  
  192.  
  193.  
  194.  
  195.      Page 3                         (printed 3/14/87)
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.      EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))     XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV    ((((11112222////22228888////88884444))))       EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))
  203.  
  204.  
  205.  
  206.      NNNNAAAAMMMMEEEE
  207.       espresso -- input file format    for espresso(1)
  208.  
  209.      DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN
  210.       _E_s_p_r_e_s_s_o accepts as input a two-level    description of a
  211.       Boolean switching function.  This is described as a
  212.       character matrix with    keywords imbedded in the input to
  213.       specify the size of the matrix and the logical format    of the
  214.       input    function.  Comments are    allowed    within the input by
  215.       placing a pound sign (#) as the first    character on a line.
  216.       Comments and unrecognized keywords are passed    directly from
  217.       the input file to standard output.  Any white-space (blanks,
  218.       tabs,    etc.), except when used    as a delimiter in an imbedded
  219.       command, is ignored.    It is generally    assumed    that the PLA
  220.       is specified such that each row of the PLA fits on a single
  221.       line in the input file.
  222.  
  223.      KKKKEEEEYYYYWWWWOOOORRRRDDDDSSSS
  224.       The following    keywords are recognized    by _e_s_p_r_e_s_s_o.  The list
  225.       shows    the probable order of the keywords in a    PLA
  226.       description.    [d] denotes a decimal number and [s] denotes a
  227.       text string.
  228.  
  229.       ....iiii [[[[dddd]]]]      Specifies    the number of input variables.
  230.  
  231.       ....oooo [[[[dddd]]]]      Specifies    the number of output functions.
  232.  
  233.       ....ttttyyyyppppeeee    [[[[ssss]]]]   Sets the logical interpretation of the character
  234.               matrix as    described below    under "Logical
  235.               Description of a PLA".  This keyword must    come
  236.               before any product terms.     [s] is    one of f, r,
  237.               fd, fr, dr, or fdr.
  238.  
  239.       ....pppphhhhaaaasssseeee [[[[ssss]]]]  [s] is a string of as many 0's or    1's as there
  240.               are output functions.  It    specifies which
  241.               polarity of each output function should be used
  242.               for the minimization (a 1    specifies that the
  243.               ON-set of    the corresponding output function
  244.               should be    used, and a 0 specifies    that the OFF-
  245.               set of the corresponding output function should
  246.               be minimized).
  247.  
  248.       ....ppppaaaaiiiirrrr    [[[[dddd]]]]   Specifies    the number of pairs of variables which
  249.               will be paired together using two-bit decoders.
  250.               The rest of the line contains pairs of numbers
  251.               which specify the    binary variables of the    PLA
  252.               which will be paired together.  The binary
  253.               variables    are numbered starting with 1.  The PLA
  254.               will be reshaped so that any unpaired binary
  255.               variables    occupy the leftmost part of the    array,
  256.               then the paired multiple-valued columns, and
  257.               finally any multiple-valued variables.
  258.  
  259.  
  260.  
  261.      Page 1                         (printed 3/14/87)
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.      EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))     XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV    ((((11112222////22228888////88884444))))       EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))
  269.  
  270.  
  271.  
  272.       ....kkkkiiiissssssss          Sets up for a _k_i_s_s-style minimization.
  273.  
  274.       ....pppp [[[[dddd]]]]      Specifies    the number of product terms.  The
  275.               product terms (one per line) follow immediately
  276.               after this keyword.  Actually, this line is
  277.               ignored, and the ".e", ".end", or    the end    of the
  278.               file indicate the    end of the input description.
  279.  
  280.       ....eeee ((((....eeeennnndddd))))   Marks the    end of the PLA description.
  281.  
  282.  
  283.  
  284.      LLLLOOOOGGGGIIIICCCCAAAALLLL DDDDEEEESSSSCCCCRRRRIIIIPPPPTTTTIIIIOOOONNNN OOOOFFFF AAAA PPPPLLLLAAAA
  285.       When we speak    of the ON-set of a Boolean function, we    mean
  286.       those    minterms which imply the function value    is a 1.
  287.       Likewise, the    OFF-set    are those terms    which imply the
  288.       function is a    0, and the DC-set (don't care set) are those
  289.       terms    for which the function is unspecified.    A function is
  290.       completely described by providing its    ON-set,    OFF-set    and
  291.       DC-set.  Note    that all minterms lie in the union of the ON-
  292.       set, OFF-set and DC-set, and that the    ON-set,    OFF-set    and
  293.       DC-set share no minterms.
  294.  
  295.       The purpose of the _e_s_p_r_e_s_s_o minimization program is to find
  296.       a logically equivalent set of    product-terms to represent the
  297.       ON-set and optionally    minterms which lie in the DC-set,
  298.       without containing any minterms of the OFF-set.
  299.  
  300.       A Boolean function can be described in one of    the following
  301.       ways:
  302.  
  303.       1)   By providing the    ON-set.     In this case, _e_s_p_r_e_s_s_o
  304.            computes    the OFF-set as the complement of the ON-set
  305.            and the DC-set is empty.     This is indicated with    the
  306.            keyword ".type f" in the    input file, or "-f" on the
  307.            command line.
  308.  
  309.       2)   By providing the    ON-set and DC-set.  In this case,
  310.            _e_s_p_r_e_s_s_o    computes the OFF-set as    the complement of the
  311.            union of    the ON-set and the DC-set.  If any minterm
  312.            belongs to both the ON-set and DC-set, then it is
  313.            considered a don't care and may be removed from the
  314.            ON-set during the minimization process.    This is
  315.            indicated with the keyword ".type fd" in    the input
  316.            file, or    "-fd" on the command line.
  317.  
  318.       3)   By providing the    ON-set and OFF-set.  In    this case,
  319.            _e_s_p_r_e_s_s_o    computes the DC-set as the complement of the
  320.            union of    the ON-set and the OFF-set.  It    is an error
  321.            for any minterm to belong to both the ON-set and    OFF-
  322.            set.  This error    may not    be detected during the
  323.            minimization, but it can    be checked with    the subprogram
  324.  
  325.  
  326.  
  327.      Page 2                         (printed 3/14/87)
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))     XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV    ((((11112222////22228888////88884444))))       EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))
  335.  
  336.  
  337.  
  338.            "-do check" which will check the    consistency of a
  339.            function.  This is indicated with the keyword ".type
  340.            fr" in the input    file, or "-fr" on the command line.
  341.  
  342.       4)   By providing the    ON-set,    OFF-set    and DC-set.  This is
  343.            indicated with the keyword ".type fdr" in the input
  344.            file, or    "-fdr" on the command line.
  345.  
  346.       If at    all possible, _e_s_p_r_e_s_s_o should be given the DC-set
  347.       (either implicitly or    explicitly) in order to    improve    the
  348.       results of the minimization.
  349.  
  350.       A term is represented    by a "cube" which can be considered
  351.       either a compact representation of an    algebraic product term
  352.       which    implies    the function value is a    1, or as a
  353.       representation of a row in a PLA which implements the    term.
  354.       A cube has an    input part which corresponds to    the input
  355.       plane    of a PLA, and an output    part which corresponds to the
  356.       output plane of a PLA    (for the multiple-valued case, see
  357.       below).
  358.  
  359.  
  360.      SSSSYYYYMMMMBBBBOOOOLLLLSSSS IIIINNNN    TTTTHHHHEEEE PPPPLLLLAAAA    MMMMAAAATTTTRRRRIIIIXXXX AAAANNNNDDDD TTTTHHHHEEEEIIIIRRRR IIIINNNNTTTTEEEERRRRPPPPRRRREEEETTTTAAAATTTTIIIIOOOONNNN
  361.       Each position    in the input plane corresponds to an input
  362.       variable where a 0 implies the corresponding input literal
  363.       appears complemented in the product term, a 1    implies    the
  364.       input    literal    appears    uncomplemented in the product term,
  365.       and -    implies    the input literal does not appear in the
  366.       product term.
  367.  
  368.       With logical type _f, for each    output,    a 1 means this product
  369.       term belongs to the ON-set, and a 0 or - means this product
  370.       term has no meaning for the value of this function.  This
  371.       logical type corresponds to an actual    PLA where only the
  372.       ON-set is actually implemented.
  373.  
  374.       With logical type _f_d (the default), for each output, a 1
  375.       means    this product term belongs to the ON-set, a 0 means
  376.       this product term has    no meaning for the value of this
  377.       function, and    a - implies this product term belongs to the
  378.       DC-set.
  379.  
  380.       With logical type _f_r,    for each output, a 1 means this
  381.       product term belongs to the ON-set, a    0 means    this product
  382.       term belongs to the OFF-set, and a - means this product term
  383.       has no meaning for the value of this function.
  384.  
  385.       With logical type _f_d_r, for each output, a 1 means this
  386.       product term belongs to the ON-set, a    0 means    this product
  387.       term belongs to the OFF-set, a - means this product term
  388.       belongs to the DC-set, and a ~ implies this product term has
  389.       no meaning for the value of this function.
  390.  
  391.  
  392.  
  393.      Page 3                         (printed 3/14/87)
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.      EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))     XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV    ((((11112222////22228888////88884444))))       EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))
  401.  
  402.  
  403.  
  404.       Note that regardless of the logical type of PLA, a ~ implies
  405.       the product term has no meaning for the value    of this
  406.       function.  2 is allowed as a synonym for -, 4    is allowed for
  407.       1,  and 3 is allowed for ~.  Also, the logical PLA type can
  408.       also be specified on the command line.
  409.  
  410.      MMMMUUUULLLLTTTTIIIIPPPPLLLLEEEE----VVVVAAAALLLLUUUUEEEEDDDD FFFFUUUUNNNNCCCCTTTTIIIIOOOONNNNSSSS
  411.       Espresso will    also minimize multiple-valued Boolean
  412.       functions.  There can    be an arbitrary    number of multiple-
  413.       valued variables, and    each can be of a different size.  If
  414.       there    are also binary-valued variables, they should be given
  415.       as the first variables on the    line (for ease of
  416.       description).     Of course, it is always possible to place
  417.       them anywhere    on the line as a two-valued multiple-valued
  418.       variable.  The function size is described by the imbedded
  419.       option ".mv" rather than ".i"    and ".o".
  420.  
  421.       ....mmmmvvvv [[[[nnnnuuuummmm____vvvvaaaarrrr]]]]    [[[[nnnnuuuummmm____bbbbiiiinnnnaaaarrrryyyy____vvvvaaaarrrr]]]] [[[[ssss1111]]]] ....    .... .... [[[[ssssnnnn]]]]
  422.               Specifies    the number of variables    (num_var), the
  423.               number of    binary variables (num_binary_var), and
  424.               the size of each of the multiple-valued
  425.               variables    (s1 through sn).  A multiple-output
  426.               binary function with _n_i inputs and _n_o outputs
  427.               would be specified as ".mv _n_i+_1 _n_i _n_o." ".mv"
  428.               cannot be    used with either ".i" or ".o" -    use
  429.               one or the other to specify the function size.
  430.  
  431.       The binary variables are given as described above.  Each of
  432.       the multiple-valued variables    are given as a bit-vector of 0
  433.       and 1    which have their usual meaning for multiple-valued
  434.       functions.  The last multiple-valued variable    (also called
  435.       the output) is interpreted as    described above    for the    output
  436.       (to split the    function into an ON-set, OFF-set and DC-set).
  437.       A vertical bar "|" may be used to separate the multiple-
  438.       valued fields    in the input file.
  439.  
  440.       If the size of the multiple-valued field is less than    zero,
  441.       than a symbolic field    is interpreted from the    input file.
  442.       The absolute value of    the size specifies the maximum number
  443.       of unique symbolic labels which are expected in this column.
  444.       The symbolic labels are white-space delimited    strings    of
  445.       characters.
  446.  
  447.       To perform a _k_i_s_s-style encoding problem, either the keyword
  448.       ....kkkkiiiissssssss    must be    in the file, or    the ----kkkkiiiissssssss option must be used
  449.       on the command line.    Further, the third to last variable on
  450.       the input file must be the symbolic "present state", and the
  451.       second to last variable must be the "next state".  As
  452.       always, the last variable is the output.  The    symbolic "next
  453.       state" will be hacked    to be actually part of the output.
  454.  
  455.  
  456.  
  457.  
  458.  
  459.      Page 4                         (printed 3/14/87)
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.      EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))     XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV    ((((11112222////22228888////88884444))))       EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))
  467.  
  468.  
  469.  
  470.      EEEEXXXXAAAAMMMMPPPPLLLLEEEE ####1111
  471.       A two-bit adder which    takes in two 2-bit operands and
  472.       produces a 3-bit result can be described completely in
  473.       minterms as:
  474.  
  475.  
  476.             # 2-bit by 2-bit binary adder (with    no carry input)
  477.             .i 4
  478.             .o 3
  479.             .type fr
  480.             .pair 2 (1 3) (2 4)
  481.             .phase 011
  482.             00 00     000
  483.             00 01     001
  484.             00 10     010
  485.             00 11     011
  486.             01 00     001
  487.             01 01     010
  488.             01 10     011
  489.             01 11     100
  490.             10 00     010
  491.             10 01     011
  492.             10 10     100
  493.             10 11     101
  494.             11 00     011
  495.             11 01     100
  496.             11 10     101
  497.             11 11     110
  498.             .end
  499.  
  500.  
  501.       The logical format for this input file (i.e.,    type fr) is
  502.       given    to indicate that the file contains both    the ON-set and
  503.       the OFF-set.    Note that in this case,    the zeros in the
  504.       output plane are really specifying "value must be zero"
  505.       rather than "no information".
  506.  
  507.       The imbedded option ._p_a_i_r indicates that the first binary-
  508.       valued variable should be paired with    the third binary-
  509.       valued variable, and that the    second variable    should be
  510.       paired with the fourth variable.  The    function will then be
  511.       mapped into an equivalent multiple-valued minimization
  512.       problem.
  513.  
  514.       The imbedded option ._p_h_a_s_e indicates that the    positive-phase
  515.       should be used for the second    and third outputs, and that
  516.       the negative phase should be used for    the first output.
  517.  
  518.  
  519.  
  520.  
  521.  
  522.  
  523.  
  524.  
  525.      Page 5                         (printed 3/14/87)
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.      EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))     XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV    ((((11112222////22228888////88884444))))       EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))
  533.  
  534.  
  535.  
  536.      EEEEXXXXAAAAMMMMPPPPLLLLEEEE ####2222
  537.       This example shows a description of a    multiple-valued
  538.       function with    5 binary variables and 3 multiple-valued
  539.       variables (8 variables total)    where the multiple-valued
  540.       variables have sizes of 4 27 and 10 (note that the last
  541.       multiple-valued variable is the "output" and also encodes
  542.       the ON-set, DC-set and OFF-set information).
  543.  
  544.           .mv 8    5 4 27 10
  545.           0-010|1000|100000000000000000000000000|0010000000
  546.           10-10|1000|010000000000000000000000000|1000000000
  547.           0-111|1000|001000000000000000000000000|0001000000
  548.           0-10-|1000|000100000000000000000000000|0001000000
  549.           00000|1000|000010000000000000000000000|1000000000
  550.           00010|1000|000001000000000000000000000|0010000000
  551.           01001|1000|000000100000000000000000000|0000000010
  552.           0101-|1000|000000010000000000000000000|0000000000
  553.           0-0-0|1000|000000001000000000000000000|1000000000
  554.           10000|1000|000000000100000000000000000|0000000000
  555.           11100|1000|000000000010000000000000000|0010000000
  556.           10-10|1000|000000000001000000000000000|0000000000
  557.           11111|1000|000000000000100000000000000|0010000000
  558.                           .
  559.                           .
  560.                           .
  561.           11111|0001|000000000000000000000000001|0000000000
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.  
  574.  
  575.  
  576.  
  577.  
  578.  
  579.  
  580.  
  581.  
  582.  
  583.  
  584.  
  585.  
  586.  
  587.  
  588.  
  589.  
  590.  
  591.      Page 6                         (printed 3/14/87)
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.      EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))     XXXXEEEENNNNIIIIXXXX SSSSyyyysssstttteeeemmmm VVVV    ((((11112222////22228888////88884444))))       EEEESSSSPPPPRRRREEEESSSSSSSSOOOO((((5555))))
  599.  
  600.  
  601.  
  602.      EEEEXXXXAAAAMMMMPPPPLLLLEEEE ####3333
  603.       This example shows a description of a    multiple-valued
  604.       function setup for _k_i_s_s-style    minimization.  There are 5
  605.       binary variables, 2 symbolic variables (the present-state
  606.       and the next-state of    the FSM) and the output    (8 variables
  607.       total).
  608.  
  609.           .mv 8    5 -10 -10 6
  610.           .type    fr
  611.           .kiss
  612.           # This is a translation of IOFSM from    OPUS
  613.           # inputs are       IO1 IO0 INIT    SWR MACK
  614.           # outputs are       WAIT    MINIT MRD SACK MWR DLI
  615.           # reset logic
  616.           --1--        -         init0     110000
  617.           # wait for INIT to go    away
  618.           --1--        init0    init0     110000
  619.           --0--        init0    init1     110000
  620.           # wait for SWR
  621.           --00-        init1    init1     110000
  622.           --01-        init1    init2     110001
  623.           # Latch address
  624.           --0--        init2    init4     110100
  625.           # wait for SWR to go away
  626.           --01-        init4    init4     110100
  627.           --00-        init4    iowait    000000
  628.           # wait for command from MFSM
  629.           0000-        iowait   iowait    000000
  630.           1000-        iowait   init1     110000
  631.           01000        iowait   read0     101000
  632.           11000        iowait   write0    100010
  633.           01001        iowait   rmack     100000
  634.           11001        iowait   wmack     100000
  635.           --01-        iowait   init2     110001
  636.           # wait for MACK to fall (read    operation)
  637.           --0-0        rmack    rmack     100000
  638.           --0-1        rmack    read0     101000
  639.           # wait for MACK to fall (write operation)
  640.           --0-0        wmack    wmack     100000
  641.           --0-1        wmack    write0    100010
  642.           # perform read operation
  643.           --0--        read0    read1     101001
  644.           --0--        read1    iowait    000000
  645.           # perform write operation
  646.           --0--        write0   iowait    000000
  647.           .end
  648.  
  649.  
  650.  
  651.  
  652.  
  653.  
  654.  
  655.  
  656.  
  657.      Page 7                         (printed 3/14/87)
  658.  
  659.  
  660.  
  661.